From: Florian Müllner Date: Mon, 9 Mar 2020 15:45:22 +0000 (+0100) Subject: extensionSystem: Catch errors when updating extensions X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~751^2^2~126 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=39f61fc41cb4065f675149595e106fd4d3018412;p=gnome-shell.git extensionSystem: Catch errors when updating extensions Extension updates are installed at startup, so any errors that bubble up uncaught will prevent the startup to complete. While the most likely error reason was addressed in the previous commit (pending update for a no-longer exitent extension), it makes sense to catch any kind of corrupt updates to not interfere with shell startup. https://gitlab.gnome.org/GNOME/gnome-shell/issues/2343 --- diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index 3f2ee35ef..f2e8db79d 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -489,9 +489,14 @@ var ExtensionManager = class { let extensionDir = Gio.File.new_for_path( GLib.build_filenamev([global.userdatadir, 'extensions', uuid])); - FileUtils.recursivelyDeleteDir(extensionDir, false); - FileUtils.recursivelyMoveDir(dir, extensionDir); - FileUtils.recursivelyDeleteDir(dir, true); + try { + FileUtils.recursivelyDeleteDir(extensionDir, false); + FileUtils.recursivelyMoveDir(dir, extensionDir); + } catch (e) { + log('Failed to install extension updates for %s'.format(uuid)); + } finally { + FileUtils.recursivelyDeleteDir(dir, true); + } }); }